"""
@version:python3
@author:大橘为重
@file:DataLocation.py
@time:2022/3/2 21:30
"""
# 在表格中快速定位到特定的行
# 1.数据的定位 findItems
# 2.如果找到了满足条件的单元格，会定位到单元格所在的行 setSliderPosition(row)




# 0、导入需要的包和模块
from PyQt5.Qt import *
import sys

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QTableWidget")
        self.resize(500, 500)
        self.setup_ui()
    def setup_ui(self): # 添加子控件以及子控件的配置操作
        layout = QHBoxLayout()



        tablewidget = QTableWidget(self)
        tablewidget.setRowCount(40)
        tablewidget.setColumnCount(4)

        print(tablewidget.rowCount()) # 计算行列数量
        print(tablewidget.columnCount()) # 计算行列数量

        # tablewidget.resizeRowsToContents()
        # tablewidget.resizeColumnsToContents()

        for i in range(40):
            for j in range(40):
                itemContent = "(%d,%d)" %(i,j)
                tablewidget.setItem(i,j,QTableWidgetItem(itemContent))

        text = "(13,"
        items = tablewidget.findItems(text, Qt.MatchExactly) # 精确匹配
        items = tablewidget.findItems(text, Qt.MatchStartsWith)
        if len(items)>0:
            item = items[0]
            item.setBackground(QBrush(QColor(0,255,255)))
            item.setForeground(QBrush(QColor(255,0,0)))
            row = item.row()

            # 定位到指定的行
            tablewidget.verticalScrollBar().setSliderPosition(row)



        tablewidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)  # 设置表格为自适应拉伸模式
        # tablewidget.resizeRowsToContents()
        # tablewidget.resizeColumnsToContents()

        layout.addWidget(tablewidget)
        self.setLayout(layout)
        # tablewidget.setRowCount(8)

# 1、创建一个应用程序对象
app = QApplication(sys.argv)

# 2、控件操作
# 创建控件、设置控件、事件和信号的处理
# 2.1 创建控件
window = Window()
# 2.2 设置控件


# 2.3 展示控件
window.show()

# 3、应用程序的执行，进入到消息循环
sys.exit(app.exec_())